package com.ybkj.daijia.common;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * <p>
 * Copyright 2013 成都易米网络科技有限公司. All Rights Reserved
 * <ul>
 * .
 * <li>网址: <a href="http://www.easymin.com">http://www.easymin.com</a></li>
 * <li>电话: 028-61703886</li>
 * </ul>
 * </p>
 * <p>
 * 去除文本中的HTML标签工具类
 * </p>
 *
 * @author FZH
 * @version 1.0.0
 */
public final class HtmlHelper {

    /**
     * slf4j 日志记录对象.
     */
    private static final Logger LOGGER = LoggerFactory
        .getLogger(HtmlHelper.class);

    /**
     * 工具类不进行实例化.
     */
    private HtmlHelper() {
    }

    /**
     * 把含有HTML标签的文本替换为纯文本，即不包含HTML的标签.
     *
     * @param inputString 包含有HTML标签的文本
     * @return java.lang.String 不包含有HTML标签的文本
     */
    public static String html2Text(final String inputString) {
        if (null == inputString) {
            return null;
        }
        String s, t, textStr = inputString;
        // 定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script> }
        s = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>";
        // 定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style> }
        t = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>";
        try {
            // 过滤script标签
            Pattern pscript = Pattern.compile(s, Pattern.CASE_INSENSITIVE);
            Matcher mscript = pscript.matcher(textStr);
            textStr = mscript.replaceAll("");
            // 过滤style标签
            Pattern pstyle = Pattern.compile(t, Pattern.CASE_INSENSITIVE);
            Matcher mstyle = pstyle.matcher(textStr);
            textStr = mstyle.replaceAll("");
            // 过滤html标签
            Pattern ph = Pattern.compile("<[^>]+>", Pattern.CASE_INSENSITIVE);
            Matcher mhtml = ph.matcher(textStr);
            textStr = mhtml.replaceAll("");
            textStr = textStr.replaceAll("\\s*", "");
            textStr = textStr.replaceAll("&nbsp;", "");
        } catch (Exception e) {
            LOGGER.error("去掉文本的HTML标签错误", e);
            e.printStackTrace();
        }
        return textStr;
    }

    public static String html1text(String str) {

        if (null == str) {
            return null;
        }

        if (StringUtils.indexOf(str, "<") != -1) {
            str = StringUtils.replaceChars(str, "<", "&lt;");
        }

        if (StringUtils.indexOf(str, ">") != -1) {
            str = StringUtils.replaceChars(str, ">", "&gt;");
        }

        return str;
    }

    public static String htmlscripttext(String str) {

        if (null == str) {
            return null;
        }

        return str.replaceAll("<script[^>]*>[\\d\\D]*?</script>", "");
    }

    public static String replaceBlank(String str) {

        String dest = "";
        if (StringUtils.isNotBlank(str)) {
            Pattern p = Pattern.compile("\t|\r|\n");
            Matcher m = p.matcher(str);
            dest = m.replaceAll("");

            Pattern p2 = Pattern.compile("\"");
            Matcher m2 = p2.matcher(dest);
            dest = m2.replaceAll("'");
        }
        return dest;
    }

}
